// const path = require('path');
// const WebpackBar = require('webpackbar');
// const CompressionWebpackPlugin = require('compression-webpack-plugin');
// const CDNPlugins = require('cdn-plugins-jousenzhou');
// const { CustomPlugin, Host } = require('./plugin/customPlugin');
// const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
// const ZipPlugin = require('zip-webpack-plugin');
// const Timestamp = new Date().getTime();
// const { name } = require('./package');

// function resolve(dir) {
//     return path.join(__dirname, dir);
// }
// const IS_PROD = ['production', 'prepro'].includes(process.env.NODE_ENV);
// const Mode = process.argv[process.argv.length - 1];
// const port = 8830; // dev port

// module.exports = {
//     /* 静态资源路径*/
//     // publicPath: './',
//     publicPath: IS_PROD ? `//localhost:${port}` : '/',
//     /* 输出文件夹名称*/
//     outputDir: 'rbp',
//     /* 是否在保存的时候检查*/
//     lintOnSave: false,
//     /* 文件是否带哈希值*/
//     filenameHashing: true,
//     /* 生产环境是否生成 sourceMap[这里先改true吧，生产环境需要找报错定位] */
//     productionSourceMap: false,
//     /* 是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了，但是这会让你的应用额外增加 10kb 左右*/
//     runtimeCompiler: false,
//     /* 多线程构建*/
//     parallel: require('os').cpus().length > 1,
//     configureWebpack: (config) => {
//         // config.output = {
//         //     // 把子应用打包成 umd 库格式
//         //     library: `${name}-[name]`,
//         //     libraryTarget: 'umd',
//         //     jsonpFunction: `webpackJsonp_${name}`
//         // };
//         const ProgressPluginIndex = config.plugins.findIndex((em) => {
//             return em.constructor.name === 'ProgressPlugin';
//         });
//         ProgressPluginIndex > -1 && config.plugins.splice(ProgressPluginIndex, 1);
//         /* 资源映射*/
//         Object.assign(config, {
//             resolve: {
//                 extensions: ['.js', '.vue', '.json', '.ts', '.tsx'],
//                 alias: {
//                     '@': resolve('src'),
//                     Public: resolve('public')
//                 }
//             }
//         });
//         /* 进度条插件*/
//         config.plugins.push(new WebpackBar({ profile: true }));

//         /* CDN插件*/
//         config.plugins.push(
//             new CDNPlugins({
//                 devMode: false,
//                 css: [
//                     ['https://image3.myjuniu.com/devextreme&element.css'],
//                     ['https://image3.myjuniu.com/vxe-table.css'],
//                     ['https://image3.myjuniu.com/Bpmn.css']
//                 ],
//                 js: [
//                     {
//                         externals: { vue: 'Vue' },
//                         path: ['https://image3.myjuniu.com/vue.min.js', 'https://data-wp.myjuniu.com/cdn/js/vue.min.js']
//                     },
//                     {
//                         externals: { 'vue-router': 'VueRouter' },
//                         path: ['https://image3.myjuniu.com/vue-router.min.js', 'https://data-wp.myjuniu.com/cdn/js/vue-router.min.js']
//                     },
//                     {
//                         externals: { vuex: 'Vuex' },
//                         path: ['https://image3.myjuniu.com/vuex.min.js', 'https://data-wp.myjuniu.com/cdn/js/vuex.min.js']
//                     },
//                     {
//                         externals: { 'element-ui': 'ELEMENT' },
//                         path: ['https://image3.myjuniu.com/elementUi.js', 'https://data-wp.myjuniu.com/cdn/js/elementUi.js']
//                     },
//                     {
//                         externals: { axios: 'axios' },
//                         path: ['https://image3.myjuniu.com/axios.min.js', 'https://data-wp.myjuniu.com/cdn/js/axios.min.js']
//                     },
//                     {
//                         externals: {
//                             'devextreme-vue/data-grid': 'devextremeJousenzhou'
//                         },
//                         path: ['https://image3.myjuniu.com/devextremeJousenzhou.js']
//                     },
//                     {
//                         externals: {
//                             'devextreme/localization': 'devextremeJousenzhou'
//                         }
//                     },
//                     {
//                         externals: {
//                             'vxe-table-jousenzhou': 'vxeTableJousenZhou'
//                         },
//                         path: ['https://image3.myjuniu.com/vxeTable@2.9.17.js']
//                     },
//                     {
//                         externals: { 'bpmn-jousenzhou': 'BpmnJousenZhou' },
//                         path: ['https://image3.myjuniu.com/bpmn.js']
//                     }
//                 ]
//             })
//         );

//         config.module.rules.push({
//             test: /\.tsx?$/,
//             use: [
//                 { loader: 'cache-loader' },
//                 {
//                     loader: 'thread-loader',
//                     options: {
//                         workers: require('os').cpus().length - 1
//                     }
//                 },
//                 {
//                     loader: 'ts-loader',
//                     options: {
//                         happyPackMode: true,
//                         allowTsInNodeModules: true
//                     }
//                 }
//             ]
//         });
//     },
//     chainWebpack: (config) => {
//         // 去除预加载模块 [因为路由已经使用懒加载，所以需要把webpack的预加载关闭]
//         config.plugins.delete('prefetch-index').delete('preload-index');
//         config.output.filename('js/[name].' + Timestamp + '.js').end();
//         config.output.chunkFilename('js/[name].' + Timestamp + '.js').end();
//         config.output.library = `${name}-[name]`;
//         config.output.libraryTarget = `umd`;
//         config.output.jsonpFunction = `webpackJsonp_${name}`;

//         config.module.rule('svg').exclude.add(resolve('src/svg-icon')).end();
//         config.module
//             .rule('icons')
//             .test(/\.svg$/)
//             .include.add(resolve('src/svg-icon'))
//             .end()
//             .use('svg-sprite-loader')
//             .loader('svg-sprite-loader')
//             .options({
//                 symbolId: 'icon-[name]'
//             })
//             .end();
//     },
//     devServer: {
//         open: true,
//         compress: true,
//         noInfo: true,
//         overlay: true,
//         host: Host,
//         port,
//         https: false,
//         sockHost: Host,
//         headers: {
//             'Access-Control-Allow-Origin': '*'
//         }
//     },
//     css: {
//         // 是否使用css分离插件 ExtractTextPlugin
//         extract: false,
//         // 开启 CSS source maps?
//         sourceMap: false
//     }
// };
const path = require('path');
const { name } = require('./package');

function resolve(dir) {
    return path.join(__dirname, dir);
}

const port = 8830; // dev port
const dev = process.env.NODE_ENV === 'development';
module.exports = {
    /**
     * You will need to set publicPath if you plan to deploy your site under a sub path,
     * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
     * then publicPath should be set to "/bar/".
     * In most cases please use '/' !!!
     * Detail: https://cli.vuejs.org/config/#publicpath
     */
    publicPath: dev ? `//localhost:${port}` : '/',
    outputDir: 'dist',
    assetsDir: 'static',
    filenameHashing: true,
    // tweak internal webpack configuration.
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    devServer: {
        // host: '0.0.0.0',
        hot: true,
        disableHostCheck: true,
        port,
        overlay: {
            warnings: false,
            errors: true
        },
        headers: {
            'Access-Control-Allow-Origin': '*'
        }
    },
    // 自定义webpack配置
    configureWebpack: {
        resolve: {
            alias: {
                '@': resolve('src')
            }
        },
        output: {
            // 把子应用打包成 umd 库格式
            library: `${name}-[name]`,
            libraryTarget: 'umd',
            jsonpFunction: `webpackJsonp_${name}`
        }
    }
};
